﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLGPS;
using Utilities.UI;


public partial class Empresa_ABMVehiculoEmpresa : BasePage
{
    public override Perfil Perfil { get { return Perfil.Empresa; } }
    
    protected override void ControlarPermiso()
    {
        #warning reimplementar permiso (hay q verificar dos)
    }

    public Vehiculo VehiculoSeleccionado
    {
        get { return (Vehiculo)Session["VehiculoSeleccionado"]; }
        set { Session["VehiculoSeleccionado"] = value; }
    }
               

    protected void Page_Load(object sender, EventArgs e)
    {
        Titulo = "Vehiculos";
        
        if (!IsPostBack)
        {
            LlenarGrilla(Empresa.Vehiculos);
            cmbChofer.Fill(ColeccionChofer.CargarPorEmpresa(Empresa), "Nombre");            
            cmbFlota.Fill(Empresa.Flotas, "Descripcion");
            cmbTipo.Fill(ColeccionTipoVehiculo.Tipos, "Descripcion");
            cmbTipoFiltro.Fill(ColeccionTipoVehiculo.Tipos, "Descripcion");
            cmbTipoFiltro.Items.Insert(0,new ListItem("Todos", "Todos")); 
            
            cmbActivoFiltro.Items.Add(new ListItem("Todos", "Todos"));
            cmbActivoFiltro.Items.Add(new ListItem("Activos", "s"));
            cmbActivoFiltro.Items.Add(new ListItem("Inactivos", "n"));

        }
      
    }

    private void LlenarGrilla(IEnumerable<Vehiculo> vehiculos)
    {
        grd.DataSource = vehiculos;
        grd.DataKeyNames = new string[] { "Id" };  
        grd.DataBind();
    }


    protected void cmdNuevo_Click(object sender, EventArgs e)
    {
        hidTitle.Value = "Nuevo vehiculo";
        VehiculoSeleccionado = null;
        txtDescripcion.Text = "";
        txtPatente.Text = "";
        txtVelocidad.Text = "";
        chkActivo.Checked = true;
        cmbChofer.SelectedIndex = 1;
        cmbFlota.SelectedIndex = 1;
        cmbTipo.SelectedIndex = 1;
        hidShowDialog.Value = "true";
    }
    
    protected void grd_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "modificar":
                               
                VehiculoSeleccionado = (Vehiculo)grd.GetItem(Empresa.Vehiculos, e);
               //VehiculoSeleccionado = grd.GetItem<ColeccionVehiculo, Vehiculo>(Empresa.Vehiculos,e);
 
                MostrarDatos();

                break;
            default:
                break;
        }

    }

    private void MostrarDatos()
    {
        hidTitle.Value = "Modificando datos del vehiculo";
        txtDescripcion.Text = VehiculoSeleccionado.Descripcion;
        txtPatente.Text = VehiculoSeleccionado.Patente;
        txtVelocidad.Text = VehiculoSeleccionado.VelocidadMaxima.ToString();
        cmbChofer.SelectedValue = VehiculoSeleccionado.Chofer.Id.ToString();
        cmbFlota.SelectedValue = VehiculoSeleccionado.Flota.Id.ToString();
        cmbTipo.SelectedValue = VehiculoSeleccionado.TipoVehiculo.Id.ToString();
        chkActivo.Checked = VehiculoSeleccionado.Activo == "S" ? true : false;
        hidShowDialog.Value = "true";
    }

    protected void cmdAceptar_Click(object sender, EventArgs e)
    {
       
        if (VehiculoSeleccionado == null)//es porq es nuevo
        {
            VehiculoSeleccionado = new Vehiculo();
            VehiculoSeleccionado.FechaAlta = DateTime.Now;
            
        }

        VehiculoSeleccionado.Activo = chkActivo.Checked?"S":"N";
        VehiculoSeleccionado.Descripcion=txtDescripcion.Text;
        VehiculoSeleccionado.Patente=txtPatente.Text;
        
        VehiculoSeleccionado.Chofer = ColeccionChofer.CargarPorEmpresa(Empresa).ObtenerPorId(long.Parse(cmbChofer.SelectedValue));
        VehiculoSeleccionado.Flota = Empresa.Flotas.ObtenerPorId(long.Parse(cmbChofer.SelectedValue));
        VehiculoSeleccionado.TipoVehiculo = ColeccionTipoVehiculo.Tipos.ObtenerPorId(long.Parse(cmbChofer.SelectedValue));
 
        
        int vel;
        if (int.TryParse(txtVelocidad.Text, out vel))
        {
            VehiculoSeleccionado.VelocidadMaxima = vel;        
        }

       
#warning habilitar        VehiculoSeleccionado.Guardar(Empresa);

        Empresa.Vehiculos = null;
        VehiculoSeleccionado = null;
    }
    protected void cmbTipoFiltro_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cmbTipoFiltro.SelectedValue == "Todos")
        {
            LlenarGrilla(Empresa.Vehiculos);
        }
        else
        {
            TipoVehiculo tipo = ColeccionTipoVehiculo.Tipos.ObtenerPorId(long.Parse(cmbTipoFiltro.SelectedValue));
            LlenarGrilla(Empresa.Vehiculos.ObtenerPorTipo(tipo));
            hidShowDialog.Value = "false";
        }
    }

    protected void cmbActivoFiltro_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cmbActivoFiltro.SelectedValue == "Todos")
        {
            LlenarGrilla(Empresa.Vehiculos);
        }
        else
        {
            LlenarGrilla(Empresa.Vehiculos.Where<Vehiculo>(v => v.Activo.ToLower() == cmbActivoFiltro.SelectedValue));
            hidShowDialog.Value = "false";
        }
    }

}